package cn.fusugar.weiget;

import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;

import cn.fusugar.BaseApplication;

/**
 * Created : Yx
 * Time : 2018/11/21 11:43
 * Describe :尺寸转换
 * 根据手机的分辨率转化
 */
public class PadUtils {

    /**
     * dp 转 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * px(像素) 转 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 获取屏幕宽度
     *
     * @param mContext
     * @return
     */
    public static int getScreenWidth(Context mContext) {
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        int screenWidth = dm.widthPixels;// 屏幕宽度（像素）
        return screenWidth;
    }

    //当前屏幕方向
    public static boolean isNowDirection(Context mContext) {
        Configuration mConfiguration = mContext.getResources().getConfiguration(); //获取设置的配置信息
        int ori = mConfiguration.orientation; //获取屏幕方向
        if (ori == mConfiguration.ORIENTATION_LANDSCAPE) {//当前屏幕方向横屏
            //横屏
            return true;
        } else {
            //竖屏
            return false;
        }
    }


    /**
     * 到底是不是平板
     *
     * @param mContext
     * @return
     */
    public static boolean isPads(Context mContext) {
        if (isPad1(mContext)) {
            return true;//是
        }
        if (isPad2(mContext)) {
            return true;//是
        }
        return false;
    }

    /**
     * 判断当前设备是手机还是平板，代码来自 Google I/O App for Android
     *
     * @return 平板返回 True，手机返回 False
     */
    private static boolean isPad1(Context mContext) {
        return (mContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }

    /**
     * 判断当前屏幕尺寸是否大于6英寸
     *
     * @param mContext
     * @return
     */
    private static boolean isPad2(Context mContext) {
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        int screenWidth = dm.widthPixels;// 屏幕宽度（像素）
        float screenHeight = dm.heightPixels;// 屏幕高度
        double x = Math.pow(screenWidth / dm.xdpi, 2);
        double y = Math.pow(screenHeight / dm.ydpi, 2);
        // 屏幕尺寸
        double screenInches = Math.sqrt(x + y);
        // 大于6尺寸则为Pad
        if (screenInches >= 6.0) {
            BaseApplication.iYx("--大于6英寸--");
            return true;
        }
        return false;
    }

    /**
     * 一行显示几个
     *
     * @param mContext
     * @param itemWidth 一个Item的宽度dp
     */
    public static int inItSpanCount(Context mContext, float itemWidth) {
        int screenWidth = getScreenWidth(mContext);//屏幕宽PX
        BaseApplication.iYx("--屏幕宽--" + screenWidth);
        final float scale = mContext.getResources().getDisplayMetrics().density;
        BaseApplication.iYx("--屏幕密度比例--" + scale);


        int screendpWidth = px2dip(mContext, screenWidth);//屏幕宽dp
        BaseApplication.iYx("--屏幕宽DP--" + screendpWidth);

        return 0;
    }

}
